﻿using BO;
using CadastroBase;
using ControlePerfil;
using ControleUsuario;
using CronosGlobal;
using CronosUtil;
using Interface.BO;
using JMI_Nucleo.Classe;
using JMI_Nucleo.View.Form_Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.VisualStyles;

namespace Aquiles
{
    public partial class FrmPrincipal : Form
    {
        private const string NOME_APLICATIVO = "Aquiles Manager. ";
        private bool logado = false;
        private bool sucessoCadastroUsuario = false;
   
        public FrmPrincipal()
        {
            InitializeComponent();

            FrmSplahScreen frmSplash = new FrmSplahScreen();
            frmSplash.Show();
      
            Application.DoEvents();

            Thread.Sleep(1000);
            frmSplash.Close();
        }
        
        private void Inicializa()
        {
            // Grava tamanho do formulário principal em arquivo ini
            string arquivoINI = Path.Combine(Directory.GetCurrentDirectory(), "configmain.ini");
            //IniFile iniFile = new IniFile(arquivoINI);
            //iniFile.IniWriteValue("FrmMain", "Height", this.Height.ToString());
            //iniFile.IniWriteValue("FrmMain", "Width", this.Width.ToString());


            this.Text = NOME_APLICATIVO;
            string cidadePadrao = "Jaboticabal/SP: "; // Por enquanto esta fixo
            string mesExtenso = new CultureInfo("pt-BR").DateTimeFormat.GetMonthName(DateTime.Now.Month);
            string diaExtenso = new CultureInfo("pt-BR").DateTimeFormat.GetDayName(DateTime.Now.DayOfWeek);

            string dia = String.Format("{0} dia {1} de {2} de {3} {4}, ", cidadePadrao, DateTime.Now.Day.ToString(), mesExtenso, DateTime.Now.Year.ToString(), diaExtenso);
            StatusDataHora.Text = dia;
            StatusDataHora.Size = new Size(dia.Length + 10, StatusDataHora.Size.Height);

            StatusMensagem.Text = "Sistema Inicializado ...";
            StatusUsuario.Text = "Usuário Padrão";

            IEmpresa empresa = new Empresa();
            IUsuario usuario = new Usuario();

            if (empresa.ExisteCadastro())
            {
                if (usuario.ExisteCadastro())
                {
                    //int x = (this.Width / 2) - (formAviso.Width / 2);
                    //int y = (this.Height / 2) - (formAviso.Height / 2);
                    //formAviso.Location = new Point(x, y);
                    //formAviso.Update();

                    FrmLogin formLogin = new FrmLogin();
                    formLogin.ShowDialog();                    
                    logado = formLogin.DialogResult == System.Windows.Forms.DialogResult.OK;
                }
                else
                {
                    FrmUsuario formUsuario = new FrmUsuario();
                    formUsuario.Titulo = "Cadastro de Usuários";
                    formUsuario.ShowDialog();
                    sucessoCadastroUsuario = formUsuario.DialogResult == System.Windows.Forms.DialogResult.OK;
                }
            }
            else
            {
                FrmEmpresa formEmpresa = new FrmEmpresa();
                formEmpresa.Titulo = "Cadastro de Empresas";
                formEmpresa.ShowDialog();
            }
        }

        private void FrmPrincipal_Load(object sender, EventArgs e)
        {
            Inicializa();
        }

        private void sairToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void FrmPrincipal_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (Global.GetInstance().EncerraAplicacao)
                e.Cancel = false;
            else
            {
                if (JMIMsg.MsgConfirma("Deseja realmente sair do sistema " + NOME_APLICATIVO + "?") == DialogResult.Yes)
                    e.Cancel = false;
                else
                    e.Cancel = true;
            }
        }

        private void categoriaDeFuncionáriosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmCategoriaFuncionario formCategoria = new FrmCategoriaFuncionario();
            formCategoria.Titulo = "Cadastro Categoria de Funcionários";
            formCategoria.ShowDialog();
        }

        private void funcionáriosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmFuncionario formFuncionario = new FrmFuncionario();
            formFuncionario.Titulo = "Cadastro de Funcionários"; 
            formFuncionario.ShowDialog();
        }

        private void logDeErrosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmViewLog formLog = new FrmViewLog();
            formLog.ShowDialog();
        }

        private void perfisToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmPerfil formPerfil = new FrmPerfil();
            formPerfil.Titulo = "Cadastro de Perfis";
            formPerfil.ShowDialog();
        }

        private void usuáriosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmUsuario formUsuario = new FrmUsuario();
            formUsuario.Titulo = "Cadastro de Usuários";
            formUsuario.ShowDialog();
        }

        private void funçõesDoSistemaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmFuncaoSistema formFuncaoSistema = new FrmFuncaoSistema();
            formFuncaoSistema.Titulo = "Cadastro de Funções do Sistema";
            formFuncaoSistema.ShowDialog();
        }

        private void EmpresatoolStripMenuItem1_Click(object sender, EventArgs e)
        {
            FrmEmpresa formEmpresa = new FrmEmpresa();
            formEmpresa.lblTitulo.Text = "Cadastro de Empresas";
            formEmpresa.ShowDialog();
        }
    }
}
